home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / PC Card Manager / CIncludes / Interrupts.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-13  |  3.1 KB  |  121 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Interrupts.h
  3.  
  4.      Contains:    Public Interface to the Interrupt Manager.
  5.  
  6.      Version:    PowerSurge 1.0.2 and beyond (including Copland)
  7.  
  8.      DRI:        Jonathan Sand
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            SuperMario Build Daemon
  17.                  With Interfacer:    2.0d10   (PowerPC native)
  18.                  From:                Interrupts.i
  19.                      Revision:        29
  20.                      Dated:            1/18/96
  21.                      Last change by:    jrs
  22.                      Last comment:    Compile with MrC. Use stub libraries.
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28. #ifndef __INTERRUPTS__
  29. #define __INTERRUPTS__
  30.  
  31. #ifndef __TYPES__
  32. #include <Types.h>
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT_SUPPORTED
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_ALIGN_SUPPORTED
  44. #pragma options align=mac68k
  45. #endif
  46.  
  47. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  48. /*  Interrupt types  */
  49. typedef struct OpaqueInterruptSetID* InterruptSetID;
  50. typedef long InterruptMemberNumber;
  51. struct InterruptSetMember {
  52.     InterruptSetID                     setID;
  53.     InterruptMemberNumber             member;
  54. };
  55. typedef struct InterruptSetMember InterruptSetMember;
  56.  
  57.  
  58. enum {
  59.     kISTChipInterruptSource        = 0,
  60.     kISTOutputDMAInterruptSource = 1,
  61.     kISTInputDMAInterruptSource    = 2,
  62.     kISTPropertyMemberCount        = 3
  63. };
  64.  
  65. typedef InterruptSetMember ISTProperty[3];
  66. #define kISTPropertyName    "driver-ist" 
  67.  
  68. typedef long InterruptReturnValue;
  69.  
  70. enum {
  71.     kFirstMemberNumber            = 1,
  72.     kIsrIsComplete                = 0,
  73.     kIsrIsNotComplete            = -1,
  74.     kMemberNumberParent            = -2
  75. };
  76.  
  77. typedef Boolean InterruptSourceState;
  78.  
  79. enum {
  80.     kSourceWasEnabled            = true,
  81.     kSourceWasDisabled            = false
  82. };
  83.  
  84. typedef InterruptMemberNumber (*InterruptHandler)(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
  85. typedef void (*InterruptEnabler)(InterruptSetMember ISTmember, void *refCon);
  86. typedef InterruptSourceState (*InterruptDisabler)(InterruptSetMember ISTmember, void *refCon);
  87.  
  88. enum {
  89.     kReturnToParentWhenComplete    = 0x00000001,
  90.     kReturnToParentWhenNotComplete = 0x00000002
  91. };
  92.  
  93. typedef OptionBits InterruptSetOptions;
  94. /*  Interrupt Services  */
  95. extern OSStatus CreateInterruptSet(InterruptSetID parentSet, InterruptMemberNumber parentMember, InterruptMemberNumber setSize, InterruptSetID *setID, InterruptSetOptions options);
  96.  
  97. extern OSStatus InstallInterruptFunctions(InterruptSetID setID, InterruptMemberNumber member, void *refCon, InterruptHandler handlerFunction, InterruptEnabler enableFunction, InterruptDisabler disableFunction);
  98.  
  99. extern OSStatus GetInterruptFunctions(InterruptSetID setID, InterruptMemberNumber member, void **refCon, InterruptHandler *handlerFunction, InterruptEnabler *enableFunction, InterruptDisabler *disableFunction);
  100.  
  101. extern OSStatus ChangeInterruptSetOptions(InterruptSetID setID, InterruptSetOptions options);
  102.  
  103. extern OSStatus GetInterruptSetOptions(InterruptSetID setID, InterruptSetOptions *options);
  104.  
  105. #endif
  106.  
  107. #if PRAGMA_ALIGN_SUPPORTED
  108. #pragma options align=reset
  109. #endif
  110.  
  111. #if PRAGMA_IMPORT_SUPPORTED
  112. #pragma import off
  113. #endif
  114.  
  115. #ifdef __cplusplus
  116. }
  117. #endif
  118.  
  119. #endif /* __INTERRUPTS__ */
  120.  
  121.